
package com.crowdfunding.circle.data.service;

import java.util.List;
import java.util.UUID;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.crowdfunding.circle.data.dao.DataPlatformDao;
import com.crowdfunding.circle.data.dao.PlatformTradeDao;
import com.crowdfunding.circle.data.entity.DataPlatformVO;
import com.crowdfunding.circle.data.entity.PlatformTradeVO;
import com.crowdfunding.circle.data.param.PlatformTradeParam;

/**
 * 平台交易信息Service实现类
 *
 * @author 朱国军
 * @version 2016年10月21日 朱国军
 */
@Service
public class PlatformTradeService {

    @Autowired
    private PlatformTradeDao platformTradeDao;

    @Autowired
    private DataPlatformDao platformDao;

    /**
     * 新增，注：返回的添加的条数，获取主键用entity.getId();
     *
     * @param entity 要增加的平台交易信息对象
     * @return 返回新增的条数
     */
    @Transactional
    public Integer insert(PlatformTradeVO platformTradeVO, String platformName, String userId) {
        platformTradeVO.setPlatformTradeId(UUID.randomUUID().toString());
        platformTradeVO.setDataStatus(0);
        platformTradeVO.setAuditStatus(1);
        platformTradeVO.setPublishUser(userId);
        
        if (StringUtils.isBlank(platformTradeVO.getPlatformId())) {
            String platformId = UUID.randomUUID().toString();
            platformTradeVO.setPlatformId(platformId);
            
            DataPlatformVO platformVO = new DataPlatformVO();
            platformVO.setPlatformId(platformId);
            platformVO.setPlatformName(platformName);
            platformVO.setPublishUser(userId);
            platformVO.setAuditStatus(1);
            platformVO.setManagerUser(userId);
            platformVO.setDataStatus(0);
            platformDao.insert(platformVO);
        }
        return platformTradeDao.insert(platformTradeVO);
    }

    /**
     * 修改
     *
     * @param entity 要修改的平台交易信息对象
     * @return 返回修改的条数
     */
    public Integer update(PlatformTradeVO entity) {
        return platformTradeDao.update(entity);
    }

    /**
     * 根据ID获取平台交易信息实体
     *
     * @param id 主键
     * @return 平台交易信息信息
     */
    public PlatformTradeVO findById(String id) {
        return platformTradeDao.findById(id);
    }

    /**
     * 按查询条件【分页】查询
     *
     * @param param 平台交易信息查询条件
     * @return 平台交易信息列表
     */
    public List<PlatformTradeVO> queryByPage(PlatformTradeParam param) {
        return platformTradeDao.queryByPage(param);
    }

    /**
     * 根据ID删除平台交易信息
     *
     * @param id 主键
     */
    public Integer delete(String id) {
        return platformTradeDao.delete(id);
    }
}
